﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;

namespace M2B.GestionEntretiens.POCOS
{

    /// <summary>
    /// Cette Classe décrit une question
    /// </summary>
    /// <remarks>
    /// Informations de la classe : 
    /// <list type="bullet">
    /// <item name="authors">Auteur : M2B : Bilel / Maher SAMMARI</item>
    /// <item name="creation date">Date de création : 01/04/2014</item>
    /// <item name="last modification">Date de dernière modification : 01/04/2014</item>
    /// </list>
    /// </remarks>
    [DataContract(IsReference = true)]
    public class Question
    {
        #region Properties
        /// <summary>
        /// Identificateur
        /// </summary>
        [DataMember]
        public int QuestionId { get; set; }
        /// <summary>
        /// La question
        /// </summary>
        [DataMember]
        [Required]
        [StringLength(100, ErrorMessage = "Une question doit avoir une taille supérieur à 5 et inférieur à 50", MinimumLength = 5)]
        [Display(Name = "Question")]
        public string ContenuQuestion { get; set; }
        /// <summary>
        /// Le nombre maximale des bonnes réponses
        /// </summary>
        [DataMember]
        [Required]
        [Display(Name = "Le nb maximale des bonnes réponses")]
        public int MaxReponses { get; set; }
        /// <summary>
        /// La liste des propositions de la question
        /// </summary>
        [DataMember]

        public virtual List<Proposition> Propositions { get; set; }
        /// <summary>
        /// Date de création
        /// </summary>
        [DataMember]
        [Display(Name = "Date de création")]
        [DisplayFormat(DataFormatString = "{0:d}")]
        public DateTime? DateCreation { get; set; }
        /// <summary>
        /// Date Modification
        /// </summary>
        [DataMember]
        [Display(Name = "Date de modification")]
        [DisplayFormat(DataFormatString = "{0:d}")]
        public DateTime? DateModification { get; set; }
        /// <summary>
        /// Type de la question (Question à choix multiple ou bien réponse direct sera saisie par le candidat)
        /// </summary>
        [DataMember]
        [Required]
        [Display(Name = "Type")]
        public string Type { get; set; }
        /// <summary>
        /// Commentaire
        /// </summary>
        [DataMember]
        [StringLength(200, ErrorMessage = "Un commentaire doit avoir une taille inférieur à 200")]
        [Display(Name = "Commentaire")]
        public string Commentaire { get; set; }
        /// <summary>
        /// La réponse à la question en cas d'une question à ayant une réponse à saisir
        /// </summary>
        [DataMember]
        [Display(Name = "Réponse")]
        public string Reponse { get; set; }
        /// <summary>
        /// Réponse du candidat
        /// </summary>
        [DataMember]
        [Display(Name = "La réponse du candidat")]
        public string TextReponse { get; set; }
        /// <summary>
        /// Evaluation de la question (Difficulté de la question)
        /// </summary>
        [DataMember]
        [Display(Name = "Evaluation")]
        public string Evaluation { get; set; }
        #endregion

        #region Constructeurs
        /// <summary>
        /// Constructeur par défat
        /// </summary>
        public Question()
        {
            Propositions =  new HashSet<Proposition>().ToList();
        }
        #endregion

    }
}

